home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS073.dsk
/
SATELLITE REAL TIME.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
8KB
|
211 lines
2 D$ = "<CTRL-D>": PRINT D$;"NOMONC,I,O"
5 HOME
10 PI = 3.141592:R = 6371
15 DIM P(20),IA(20),H(20),OC(20),DM(20),DD(20),DY(20),TH(20),TM(20),TS(20),LG(20),S$(20)
16 DIM D1(20),D2(20),RO(20),TR(20),LR(20),LX(20),LY(20),A2(20),E2(20)
20 REM 21-40 CONTAIN DATA FOR EACH SATELLITE
21 S$(1) = "RS-1":P(1) = 120.3894:IA(1) = 82.56:H(1) = 1704:DM(1) = 3:DD(1) = 21:DY(1) = 79:OC(1) = 1745:TH(1) = 1:TM(1) = 56:TS(1) = 35:LG(1) = 123.7
22 S$(2) = "RS-2":P(2) = 120.3925:IA(2) = 82.56:H(2) = 1704:DM(2) = 3:DD(2) = 21:DY(2) = 79:OC(2) = 1745:TH(2) = 2:TM(2) = 26:TS(2) = 00:LG(2) = 134
23 S$(3) = "P76-5":P(3) = 105.7290:IA(3) = 99.66:H(3) = 1025:DM(3) = 3:DD(3) = 14:DY(3) = 79:OC(3) = 13970:TH(3) = 0:TM(3) = 10:TS(3) = 33:LG(3) = 187
24 S$(4) = "AO-7":P(4) = 114.9448:IA(4) = 101.60:H(4) = 1460:DM(4) = 3:DD(4) = 21:DY(4) = 79:OC(4) = 19873:TH(4) = 0:TM(4) = 2:TS(4) = 09:LG(4) = 62.6
25 S$(5) = "AO-8":P(5) = 103.2284:IA(5) = 99.50:H(5) = 872:DM(5) = 3:DD(5) = 21:DY(5) = 79:OC(5) = 5305:TH(5) = 0:TM(5) = 30:TS(5) = 00:LG(5) = 51.5
49 D$ = "<CTRL-D>"
50 PRINT "****************************************": PRINT : PRINT TAB( 3)"AMATEUR SATELLITE REAL TIME PROGRAM": PRINT : PRINT TAB( 17)"BY K0RZ": PRINT : PRINT "****************************************"
55 PRINT "THIS PROGRAM WILL CALCULATE THE SUB": PRINT "SATELLITE POINT & THE GROUND STATION'S": PRINT "ANTENNA AZMITH & ELEVATION ALL AS A": PRINT "FUNCTION OF THE REAL TIME CLOCK"
210 GOSUB 7000: REM GND COORD
220 GOSUB 6000: REM SAT PRINT
225 HOME
230 FOR I = 1 TO 20
235 IF P(I) <1 THEN GOTO 1700
250 GOSUB 8000: REM REAL TIME
260 GOSUB 9000: REM REF DATA
270 GOSUB 8000
275 P = P(I):IA = IA(I):H = H(I)
280 T = TX -TR(I):LG = LR(I)
285 RO = RO(I) + INT(T/P)
299 REM 300-390 CALC OF SSP LAT
300 L1 = SIN(2 *PI *T/P) * SIN(PI *IA/180)
305 IF ABS(L1) > = 1.0 THEN GOTO 270
310 L2 = ATN(L1/ SQR( -L1 *L1 +1.))
320 L3 = 180. *L2/PI
330 LX = INT(L3)
399 REM 400-490 CALC OF SSP LONG
400 L4 = COS(2. *PI *T/P)/ COS(L2)
405 IF ABS(L4) > = 1.0 THEN GOTO 270
410 L5 = - ATN(L4/ SQR( -L4 *L4 +1.)) +1.5798
411 L5 = L5 +PI *T/720.
420 L6 = 180. *L5/PI
430 L7 = L6 +LG
431 IF L7 >360.0 THEN L7 = L7 -360.0
435 LY = INT(L7)
1099 REM 1100-1490 CALC OF AZMITH HEAD
1100 Q3 = Q1 *PI/180.
1110 Q4 = Q2 *PI/180.
1120 L8 = L7 *PI/180.
1200 C1 = SIN(L2) * SIN(Q3) + COS(L2) * COS(Q3) * COS(L8 -Q4)
1205 IF ABS(C1) > = 1.0 THEN GOTO 270
1210 C2 = - ATN(C1/ SQR( -C1 *C1 +1.)) +1.5708
1300 B1 = ( SIN(L2) - SIN(Q3) * COS(C2))/( COS(Q3) * SIN(C2))
1305 IF ABS(B1) > = 1.0 THEN GOTO 270
1310 B2 = - ATN(B1/ SQR( -B1 *B1 +1.)) +1.5708
1320 B3 = B2 *180./PI
1410 Y1 = SIN(L8 -Q4)
1420 IF Y1 >0 THEN GOTO 1450
1440 A1 = B3: GOTO 1470
1450 A1 = 360 -B3
1470 A2 = INT(A1)
1499 REM 1500-1590 CALC OF ELEV HEAD
1500 EL = ATN(( COS(C2) -(R/(R +H)))/ SIN(C2))
1510 E1 = EL *180./PI
1520 E2 = INT(E1)
1600 A2(I) = A2:E2(I) = E2:LX(I) = LX:LY(I) = LY:O(I) = RO
1650 GOSUB 5000: REM OUTPUT DATA
1700 NEXT I
1800 REM (TURN AROUND POINT)
1900 GOTO 230
5000 REM 5000-5999 USED TO PRINT OUTPUT
5200 FOR J = 1 TO 3
5210 VTAB (J)
5220 PRINT " "
5230 NEXT J
5300 VTAB (2)
5320 PRINT TAB( 5)"SATELLITE STATUS FOR ";D1;"/";D2;"/";DY
5340 VTAB (5)
5360 PRINT TAB( 16)T1;":"T2;":";T3;" "
5400 VTAB (8)
5420 PRINT TAB( 1)"SAT"; TAB( 8)"ORBIT"; TAB( 16)"LAT"; TAB( 22)"LONG"; TAB( 29)"AZM"; TAB( 36)"ELV"
5500 VTAB (2 *I +9)
5530 IF E2(I) > -5 THEN GOTO 5610
5550 PRINT S$(I); TAB( 8)O(I); TAB( 16)LX(I); TAB( 22)LY(I); TAB( 29)"---"; TAB( 36)"---"
5590 GOTO 5700
5610 PRINT S$(I); TAB( 8)O(I); TAB( 16)LX(I); TAB( 22)LY(I); TAB( 29)A2(I); TAB( 36)E2(I);" "
5700 REM CONTINUE
5990 RETURN
6000 REM 6000-6990 USED TO HOLD AND PRINT SATELLITE DATA
6005 HOME
6010 PRINT : PRINT "........................................": PRINT
6020 PRINT "THE FOLLOWING SATELLITE DATA IS ALREADY": PRINT "CONTAINED IN THIS PROGRAM"
6030 PRINT
6120 PRINT "SAT"; TAB( 10)"PER(MIN)"; TAB( 22)"INC(DEG)"; TAB( 33)"HGT(KM)"
6130 PRINT
6140 FOR I = 1 TO 20
6150 IF P(I) <1 THEN GOTO 6170
6160 PRINT S$(I); TAB( 9)P(I); TAB( 23)IA(I); TAB( 34)H(I)
6170 NEXT I
6180 PRINT
6185 PRINT
6190 PRINT "SAT"; TAB( 10)"DATE"; TAB( 17)"ORBIT"; TAB( 26)"TIME"; TAB( 35)"LONG"
6195 PRINT
6200 FOR I = 1 TO 20
6210 IF P(I) <1 THEN GOTO 6240
6230 PRINT S$(I); TAB( 8)DM(I);"/";DD(I);"/";DY(I); TAB( 17)OC(I); TAB( 25)TH(I);":";TM(I);":";TS(I); TAB( 35)LG(I)
6240 NEXT I
6350 PRINT
6360 INPUT "DO YOU WISH TO MODIFY THIS DATA (Y/N) ";Q$
6370 IF Q$ = "N" THEN GOTO 6590
6375 PRINT
6380 PRINT "WHAT IS THE NAME (FROM LIST) IF THE"
6385 PRINT "SATELLITE WHOSE DATA IS TO BE CHANGED"
6390 INPUT "I.E. AO-7 ";Q$
6400 FOR I = 1 TO 20
6405 IC = I
6410 IF Q$ = S$(IC) THEN PRINT : GOTO 6420
6414 NEXT I
6415 PRINT
6416 PRINT TAB( 10)"SATELLITE NOT FOUND"
6417 PRINT
6418 GOTO 6360
6420 GOTO 6425
6425 INPUT " PERIOD (MINUTES) = ";P(IC)
6430 INPUT " INCL ANGLE (DEG) = ";IA(IC)
6440 INPUT " HEIGHT (KM) = ";H(IC)
6450 INPUT " REFERENCE DATE MONTH = ";DM(IC)
6460 INPUT " REFERENCE DATE DAY = ";DD(IC)
6465 INPUT " REFERENCE DATE YEAR = ";DY(IC)
6470 INPUT " REFERENCE ORBIT NUMBER = ";OC(IC)
6480 INPUT " REFERENCE TIME HOURS = ";TH(IC)
6490 INPUT " REFERENCE TIME MINUTES = ";TM(IC)
6500 INPUT " REFERENCE TIME SECONDS = ";TS(IC)
6510 INPUT " REFERENCE DEGREES LONGITUDE = ";LG(IC)
6530 GOTO 6010
6590 PRINT
6600 INPUT "DO YOU WISH TO ADD TO THIS LIST (Y/N) ";Q$
6610 IF Q$ = "N" THEN GOTO 6990
6620 FOR I = 1 TO 20
6625 IC = I
6630 IF P(I) <1 THEN PRINT : GOTO 6650
6632 REM THE MAX VALUE IF I IS SET HERE
6633 J = 8
6634 IF I = J THEN PRINT : INVERSE : PRINT " NO MORE SATELLITES ": NORMAL : PRINT : GOTO 6010
6638 NEXT I
6640 PRINT
6650 INPUT "WHAT IS THE NAME OF THE SATELLITE ";S$(IC)
6660 GOTO 6420
6990 PRINT : PRINT "........................................": PRINT
6995 RETURN
7000 REM 7000-7990 USED TO HOLD OR INPUT GROUND STATION INFORMATION
7110 REM GND STA LAT IS Q1
7120 REM GND STA LONG IS Q2
7130 Q1 = 40:Q2 = 105
7150 PRINT "........................................"
7200 PRINT "THE GROUND STATION COORDINATES USED IN ": PRINT "THIS PROGRAM ARE AS FOLLOWS : (DEG)"
7210 PRINT TAB( 15)"LAT = ";Q1
7220 PRINT TAB( 15)"LONG= ";Q2
7230 PRINT
7250 PRINT "DO YOU WANT DIFFERENT GROUND STATION": INPUT "COORDINATES USED ? (Y OR N) ";Q$
7300 IF Q$ = "N" THEN GOTO 7900
7350 PRINT
7400 INPUT "GROUND STATION LATITUDE (DEG) ? ";Q1
7405 PRINT
7410 INPUT "GROUND STATION LONGITUDE (DEG) ? ";Q2
7510 PRINT
7520 GOTO 7200
7900 PRINT
7990 RETURN
8000 REM 8000-8990 USED TO OBTAIN TIME FROM REAL TIME CLOCK
8010 REM FOR APPLESOFT WITH DOS
8090 D3 = 79
8110 PRINT D$;"IN#4": PRINT D$;"PR#4"
8120 INPUT " ";T$
8130 PRINT D$;"PR#0": PRINT D$;" IN#0"
8230 MTH$ = LEFT$(T$,2):DAY$ = MID$ (T$,4,2)
8240 D1 = VAL(MTH$):D2 = VAL(DAY$)
8250 HOUR$ = MID$ (T$,7,2):MINUTE$ = MID$ (T$,10,2):SEC$ = MID$ (T$,13,2)
8260 T1 = VAL(HOUR$):T2 = VAL(MINUTE$):T3 = VAL(SEC$)
8310 TX = T1 *60 +T2 +T3/60
8930 REM D1=REAL TIME MONTH
8940 REM D2=REAL TIME DAY
8950 REM T1=REAL TIME HOUR
8960 REM T2=REAL TIME MIN
8970 REM T3=REAL TIME SEC
8980 REM TX=REAL TIME TOTAL IN MINUTES
8990 RETURN
9000 REM 9000-9990 IS USED TO CALCULATE THE PRESENT ORBIT DATA
9005 IF D1 = D1(I) AND D2 = D2(I) THEN GOTO 9990
9009 VTAB (2 *I +9): PRINT TAB( 2)"* REFERENCE ORBIT BEING CALCULATED *"
9010 DM = DM(I):DD = DD(I):DY = DY(I)
9020 TH = TH(I):TM = TM(I):TS = TS(I)
9030 P = P(I):OC = OC(I):LG = LG(I)
9050 TR = 60 *TH +TM +TS/60
9070 LD = P/1440 *360
9100 IF DM = D1 AND DD = D2 THEN GOTO 9200
9110 TR = TR +P
9120 OC = OC +1
9130 LG = LG +LD
9140 IF LG > = 360 THEN LG = LG -360
9150 IF TR > = 1440 THEN TR = TR -1440:DD = DD +1
9160 IF (DM = 2 AND DD = 29) THEN DM = 3:DD = 1: GOTO 9190
9170 IF ((DM = 4 OR DM = 6 OR DM = 9 OR DM = 11) AND (DD = 31)) THEN DM = DM +1:DD = 1: GOTO 9190
9180 IF DM = 12 AND DD = 32 THEN DM = 1:DD = 1:DY = DY +1 GOTO 9190
9185 IF DD = 32 THEN DM = DM +1:DD = 1
9190 GOTO 9100
9200 IF TX > = TR THEN GOTO 9400
9210 TR = TR -P:OC = OC -1:LG = LG -LD
9230 IF LG < = 0 THEN LG = LG +360
9400 RO(I) = OC
9410 LR(I) = LG
9420 TR(I) = TR
9430 D1(I) = DM
9440 D2(I) = DD
9990 RETURN
30000 END